package com.yss.system.service.impl;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yss.common.core.utils.StringUtils;
import com.yss.common.core.utils.uuid.IdUtils;
import com.yss.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yss.system.api.domain.SysNotice;
import com.yss.system.mapper.SysNoticeMapper;
import com.yss.system.service.ISysNoticeService;

/**
 * 公告 服务层实现
 */
@Service
public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice> implements ISysNoticeService {
    @Autowired
    private SysNoticeMapper noticeMapper;

    /**
     * 查询公告信息
     *
     * @param id 公告ID
     * @return 公告信息
     */
    @Override
    public SysNotice selectNoticeById(String id) {
        return this.getById(id);
    }

    /**
     * 查询公告列表
     *
     * @param notice 公告信息
     * @return 公告集合
     */
    @Override
    public List<SysNotice> selectNoticeList(SysNotice notice) {
        QueryWrapper<SysNotice> wrapper = new QueryWrapper<>();
        wrapper.orderByDesc("CREATE_TIME" );
        if (null == notice) {
            this.list(wrapper);
        }
        if (StringUtils.isNotEmpty(notice.getNoticeTitle())) {
            wrapper.like("NOTICE_TITLE" , notice.getNoticeTitle());
        }
        if (StringUtils.isNotEmpty(notice.getNoticeType())) {
            wrapper.eq("NOTICE_TYPE" , notice.getNoticeType());
        }
        if (StringUtils.isNotEmpty(notice.getCreateBy())) {
            wrapper.like("CREATE_BY" , notice.getCreateBy());
        }
        return this.list(wrapper);
    }

    /**
     * 新增公告
     *
     * @param notice 公告信息
     * @return 结果
     */
    @Override
    public int insertNotice(SysNotice notice) {
        notice.setCreateBy(SecurityUtils.getUsername());
        notice.setId(IdUtils.fastSimpleUUID());
        notice.setCreateTime(new Date());
        return noticeMapper.insert(notice);
    }

    /**
     * 修改公告
     *
     * @param notice 公告信息
     * @return 结果
     */
    @Override
    public int updateNotice(SysNotice notice) {
        notice.setUpdateBy(SecurityUtils.getUsername());
        return noticeMapper.updateById(notice);
    }

    /**
     * 删除公告对象
     *
     * @param id 公告ID
     * @return 结果
     */
    @Override
    public int deleteNoticeById(String id) {
        return noticeMapper.deleteById(id);
    }

    /**
     * 批量删除公告信息
     *
     * @param ids 需要删除的公告ID
     * @return 结果
     */
    @Override
    public int deleteNoticeByIds(String[] ids) {
        List<String> list = Arrays.asList(ids);
        return noticeMapper.deleteBatchIds(list);
    }
}
